Systems and methods for automatically saving a state of a communication session

ABSTRACT

A system comprising a computer-readable storage medium storing at least one program and a computer-implemented method for automatically saving and presenting a state of a communication session are presented. A user interface is displayed. The user interface comprises an interface element presented in conjunction with a presentation of content. The interface element comprises: a first selectable element operable to recall a first state of the communication session and a second selectable element to hide the interface element. The display of the interface element is updated based on user input to include a third selectable element corresponding to a second state of the communication session. The display of the interface element is hidden while maintaining a presentation of the content in response to user input indicative of a selection of the second selectable element.

PRIORITY CLAIMS

This application is a continuation of U.S. patent application Ser. No.16/453,711, filed Jun. 26, 2019, which is a continuation of and claimsthe benefit of priority to U.S. patent application Ser. No. 15/881,338,filed. Jan. 26, 2018, which application is a continuation of and claimsthe benefit of priority to U.S. patent application Ser. No. 15/405,108,filed Jan. 12, 2017, which application is a continuation of and claimsthe benefit of priority to U.S. patent application Ser. No. 14/183,106,filed on Feb. 18, 2014, entitled “SYSTEMS AND METHODS FOR AUTOMATICALLYSAVING A STATE OF A COMMUNICATION SESSION,” which applications arehereby incorporated by reference.

TECHNICAL FIELD

This application relates to data processing. In particular, exampleembodiments may relate to systems and methods for automatically saving astate of a data exchange session.

BACKGROUND

Users browsing through online content may wish to return to a previousstate of their browsing experience (e.g., a previously visited webpage).Current bookmarking technology provided by internet browsers allow usersto “bookmark” (e.g., save) certain web pages. However, such bookmarking,services are limited in the types of data that may be recalled (e.g., nocontextual information is saved) and are often unable to save the stateof certain pages (e.g., checkout pages, filled out forms, etc.) withelements that may be time sensitive. Thus, in order to return to thedesired state of their browsing session, users must go through theinefficient process of recreating each of the steps (e.g., keywordsearches performed, items clicked, pages viewed or the like) that leadto the desired state. Further, users must be conscious of the need torevisit such pages at the time of bookmarking. Moreover, in someinstances, a user may need to revisit a certain step in their browsingprocess multiple times during a particular session, but never again oncethe session has terminated. In these instances, the user would notlikely go through the effort of creating a bookmark, although the needto revisit the page exists.

BRIEF DESCRIPTION OF THE DRAWINGS

Various ones of the appended drawings merely illustrate exampleembodiments of the present invention and cannot be considered aslimiting its scope.

FIG. 1 is a network diagram depicting a network system having aclient-server architecture configured for exchanging data over anetwork, according to an example embodiment.

FIG. 2 is a block diagram illustrating an example embodiment of multiplemodules forming a marketplace application, which is provided as part ofthe network system of FIG. 1.

FIG. 3 is a block diagram illustrating an example embodiment of multiplemodules forming a scratchpad application, which is provided as part ofthe network system of FIG. 1.

FIG. 4A is an interaction diagram depicting a communication sessionbetween a first client device and an application server, consistent withsome embodiments.

FIG. 4B is an interaction diagram depicting a communication sessionbetween a second client device and an application server, consistentwith some embodiments.

FIG. 5A is an interface diagram depicting an example communicationsession, consistent with some embodiments.

FIG. 5B is an interface diagram depicting further exchanges of theexample communication session, consistent with some embodiments.

FIG. 5C is an interface diagram depicting a scratchpad interfacedisplaying a grouped set of user interface elements representative ofsession data, consistent with some embodiments.

FIG. 5D is an interface diagram depicting even further exchanges of theexample communication session, consistent with some embodiments.

FIG. 5E is an interface diagram depicting a scratchpad interfacedisplaying multiple grouped sets of user interface elementsrepresentative of session data, consistent with some embodiments.

FIG. 6 is a flowchart illustrating an example method of storing andpresenting a state of a communication session, consistent with someembodiments.

FIG. 7 is a flowchart illustrating an example method for storing anadditional state of the communication session, consistent with someembodiments.

FIG. 8 is a flowchart illustrating an example method for deletingsession data representative of a state of the communication session,consistent with some embodiments.

FIG. 9 is a flowchart illustrating an example method for automaticallystoring a state of a communication session, consistent with someembodiments.

FIG. 10 is a flowchart illustrating an example method for grouping userinterface elements representing states of a communication session,consistent with some embodiments.

FIG. 11 is a diagrammatic representation of a machine in the exampleform of a computer system within which a set of instructions for causingthe machine to perform any one or more of the methodologies discussedherein may be executed.

DETAILED DESCRIPTION

Reference will now be made in detail to specific example embodiments forcarrying out the inventive subject matter. Examples of these specificembodiments are illustrated in the accompanying drawings. It will beunderstood that they are not intended to limit the scope of the claimsto the described embodiments. On the contrary, they are intended tocover alternatives, modifications, and equivalents as may be includedwithin the scope of the disclosure. In the following description,specific details are set forth in order to provide a thoroughunderstanding of the subject matter. Embodiments may be practicedwithout some or all of these specific details. In accordance with thepresent disclosure, components, process steps, and data structures maybe implemented using various types of operating systems, programminglanguages, computing platforms, computer programs, and/or generalpurpose machines.

Aspects of the present disclosure describe systems and methods forsaving and presenting a state of a communication session. Thecommunication session may be established between a client device and anapplication server of a content publisher, and may include thepresentation of content on the client device. For example, acommunication session may include searching, viewing, comparing, andpurchasing items offered for sale in an online marketplace. The state ofthe communication session may represent the entire context leading toand forming the condition of a communication session at a particulartime. The state of the communication session may include a series ofactions performed by a user while being engaged in online activity(e.g., viewing a webpage, exchanging data with an application server,etc.). As used herein, a “user” or an “entity” may be a person (e.g., ahuman), a business (e.g., a company), an organization, a group ofpeople, a persona (e.g., a fictitious character), a bot, or anycombination thereof.

Session data representative of the state of the communication sessionmay be automatically stored, consistent with some embodiments. In otherembodiments, the method may include receiving user input to save a stateof the communication session, and in response to the user input, savingsession data representative of the state of the communication session.

The method may further include generating and causing the presentationof an interface that includes a visual representation of the savedstate. These interfaces may allow a user to navigate back to the savedstate of the communication session. In this manner, a user may be ableto recall a state of the communication session without having torecreate the flow (e.g., the series of actions leading to the savedstate) of the communication session. Additionally, a user may avoidrepeating operations that the user typically performs multiple timesduring a given communication session.

Aspects of the present disclosure may also include systems and methodsfor grouping the visual representations of the session data according tosimilar attributes of the states represented by the session data.Further aspects of these embodiments of the present invention mayinclude providing personalization services (e.g., recommendations andsearch results) based on saved communication session states.

FIG. 1 is a network diagram depicting a network system 100, according toone embodiment, having a client-server architecture configured forexchanging data over a network. The network system 100 may include anetwork-based content publisher 102 in communication with a clientdevice 106 and a third party server 114, In some example embodiments,the network-based content publisher 102 may be a network-basedmarketplace.

The network-based content publisher 102 may communicate and exchangedata within the network system 100 that may pertain to various functionsand aspects associated with the network system 100 and its users. Thenetwork-based content publisher 102 may provide server-sidefunctionality, via a network 104 (e.g., the Internet), to one or moreclient devices (e.g., client device 106). The one or more client devicesmay be operated by users that use the network system 100 to exchangedata over a network 104. These transactions may include transmitting,receiving (communicating), and processing data to, from, and regardingcontent and users of the network system 100. The data may include, butare not limited to: images; video or audio content; user preferences;product and service feedback, advice, and reviews; product, service,manufacturer, and vendor recommendations and identifiers; product andservice listings associated with buyers and sellers; product and serviceadvertisements; auction bids; transaction data; and social data amongother things.

In various embodiments, the data exchanged within the network system 100may be dependent upon user-selected functions available through one ormore client or user interfaces (UIs). The UIs may be associated with aclient device, such as the client device 106 using web client 108. Theweb client 108 may be in communication with the network-based contentpublisher 102 via a web server 118. The UIs may also be associated withone or more applications 110 executing on the client device 106, such asa client application designed for interacting with the network-basedcontent publisher 102 applications or services hosted by thenetwork-based content publisher 102, or the third party server 114(e.g., one or more servers or client devices) hosting a third partyapplication 116.

The client device 106 may be any of a variety of types of devices. Forexample, the client device 106 may a mobile device such as an iPhone® orother mobile device running the iOS® operating system, the Android®operating system, a BlackBerry® operating system, the Microsoft®Windows® Phone operating system, Symbian® OS, or webOS®. Consistent withsome embodiments, the client device 106 may alternatively be a tabletcomputer, such as an iPad® or other tablet computer running one of theaforementioned operating systems. In some embodiments, the client device106 may also be a personal digital assistant (PDA), a personalnavigation device (PND), a handheld computer, a desktop computer, alaptop or netbook, a set-top box (STB) such as provided by cable orsatellite content providers, a wearable computing device such as glassesor a wristwatch, a multimedia device embedded in an automobile, a GlobalPositioning System (GPS) device, a data enabled book reader, or a videogame system console such as the Nintendo Wii®, the Microsoft Xbox 360®,or the Sony PlayStation 3®, or other video game system consoles.

The client device 106 may interface via a connection 112 with thecommunication network 104 (e.g., the Internet or wide area network(WAN)). Depending on the form of the client device 106, any of a varietyof types of connection 112 and communication networks 104 may be used.For example, the connection 112 may be Code Division Multiple Access(CDMA) connection, a Global System for Mobile communications (GSM)connection, or other type of cellular connection. Such a connection 112may implement any of a variety of types of data transfer technology,such as Single Carrier Radio Transmission Technology (1×RFF),Evolution-Data Optimized (EVDO) technology, General Packet Radio Service(GPRS) technology, Enhanced Data rates for GSM Evolution (EDGE)technology, or other data transfer technology (e.g., fourth generationwireless, 4G networks). When such technology is employed, thecommunication network 104 may include a cellular network that has aplurality of cell sites of overlapping geographic coverage,interconnected by cellular telephone exchanges. These cellular telephoneexchanges may be coupled to a network backbone (e.g., the publicswitched telephone network (PSTN), a packet-switched data network, or toother types of networks).

In another example, the connection 112 may be Wireless Fidelity (Wi-Fi,IEEE 802.11x type) connection, a Worldwide Interoperability forMicrowave Access (WiMAX) connection, or another type of wireless dataconnection. In such an embodiment, the communication network 104 mayinclude one or more wireless access points coupled to a local areanetwork (LAN), a WAN, the Internet, or other packet-switched datanetwork. In yet another example, the connection 112 may be a wiredconnection, for example an Ethernet link, and the communication network104 may be a LAN, a WAN, the Internet, or other packet-switched datanetwork. Accordingly, a variety of different configurations areexpressly contemplated.

FIG. 1 also illustrates the third party application 116 executing on thethird party server 114 that may offer one or more services to users ofthe client device 106. The third party application 116 may haveprogrammatic access to the network-based content publisher 102 via theprogrammatic interface provided by an application program interface(API) server 120. In some embodiments, the third party application 116may be associated with any organization that may conduct transactionswith or provide services to the users of the client device 106.

Turning specifically to the network-based content publisher 102, the APIserver 120 and a web server 118 are coupled to, and provide programmaticand web interfaces respectively to, an application server 122, Theapplication server 122 may, for example, host a marketplace application124, which may provide a number of content publishing and viewingfunctions and services to users that access the network-based contentpublisher 102. The application server 122 may further host a pluralityof user accounts for users of the network-based content publisher 102,which may be stored in a database 130. As illustrated in FIG. 1, theapplication server 122 may also host a scratchpad application 126 whichmay be configured to store and generate scratchpad interfaces withsession data representative of a state of a communication session. Suchscratchpad interface may, for example, be presented on one of the clientdevice 106.

As illustrated in FIG. 1, the application server 122 may be coupled viathe API server 120 and the web server 118 to the communication network104, for example, via wired or wireless interfaces. The applicationserver 122 is, in turn, shown to be coupled to a database server 128that facilitates access to the database 130. In some examples, theapplication server 122 can access the database 130 directly without theneed for the database server 128. In some embodiments, the database 130may include multiple databases that may be internal or external to thenetwork-based content publisher 102.

The database 130 may store data pertaining to various functions andaspects associated with the network system 100 and its users. Forexample, user accounts for users of the network-based content publisher102 may be stored and maintained in the database 130. Each user accountmay comprise user data that describes aspects of a particular user. Theuser data may include demographic data, user preferences, and financialinformation. The demographic data may, for example, include informationdescribing one or more characteristics of a user. Demographic data may,for example, include gender, age, location information, employmenthistory, education history, contact information, familial relations, oruser interests. The financial information may, for example, includeprivate financial information of the user such as account number,credential, password, device identifier, user name, phone number, creditcard information, bank information, transaction history or otherfinancial information which may be used to facilitate onlinetransactions by the user. Consistent with some embodiments, thetransaction history may include information related to transactions foritems or services (collectively referred to as “products”) that may beoffered for sale by merchants using marketplace services provided by thenetwork-based content publisher 102. The transaction history informationmay, for example, include a description of a product purchased by theuser, an identifier of the product, a category to which the productbelongs, a purchase price, a quantity, or a number of bids.

The user data may also include a record of user activity, consistentwith some embodiments. Each user session may be stored in the database130 as session data and such session data may be maintained as part ofthe user data about each user. Accordingly, in some embodiments, theuser data may include past keyword searches that users have performed,web pages viewed by each user, products added to a user wish list orwatch list, products added to an electronic shopping cart, and productsthat the users own. User preferences may be inferred from the useractivity.

While the marketplace application 124 and the scratchpad application 126are shown in FIG. 1 to both form part of the network-based contentpublisher 102, it will be appreciated that, in alternative embodiments,the scratchpad application 126 may form part of a service that isseparate and distinct from the network-based content publisher 102.Further, while the system 100 shown in FIG. 1 employs client-serverarchitecture, the present inventive subject matter is, of course, notlimited to such an architecture, and could equally well find applicationin an event-driven, distributed, or peer-to-peer architecture system,for example. The various modules of the application server 122 may alsobe implemented as standalone systems or software programs, which do notnecessarily have networking capabilities. It shall be appreciated thatalthough the various functional components of the network system 100 arediscussed in the singular sense, multiple instances of one of more ofthe various functional components may be employed.

FIG. 2 is a block diagram illustrating an example embodiment of multiplemodules forming a marketplace application 124, which is provided as partof the network system 100 of FIG. 1. The modules 200-214 of themarketplace application 124 may be hosted on dedicated or shared servermachines that are communicatively coupled to enable communicationsbetween server machines. Each of the modules 200-214 are communicativelycoupled (e.g., via appropriate interfaces) to each other and to variousdata sources, so as to allow information to be passed between themodules 200-214 of the marketplace application 124 or so as to allow themodules 200-214 to share and access common data. The various modules ofthe marketplace application 124 may furthermore access one or moredatabases 130 via the database server 128 (FIG. 1).

The marketplace application 124 may provide a number of publishing,listing, and price-setting mechanisms whereby a seller may list (orpublish information concerning) goods or services for sale, a buyer canexpress interest in or indicate a desire to purchase such goods orservices, and a price can be set for a transaction pertaining to thegoods or services. To this end, the marketplace application 124 is shownto include a publication module 200 and an auction module 202, whichsupport auction-format listing and price setting mechanisms (e.g.,English, Dutch, Vickrey, Chinese, Double, Reverse auctions etc.). Theauction module 202 may also provide a number of features in support ofsuch auction-format listings, such as a reserve price feature whereby aseller may specify a reserve price in connection with a listing, and aproxy-bidding feature whereby a bidder may invoke automated proxybidding.

A fixed-price module 204 may support fixed-price listing formats (e.g.,the traditional classified advertisement-type listing or a cataloguelisting) and buyout-type listings. Specifically, buyout-type listings(e.g., including the Buy-It-Now (BIN) technology developed by eBay Inc.,of San Jose, Calif.) may be offered in conjunction with auction-formatlistings, and allow a buyer to purchase goods or services, which arealso being offered for sale via an auction, for a fixed-price that istypically higher than the starting price of the auction.

A store module 206 may allow sellers to group their product listings(e.g., goods and/or services) within a “virtual” store, which may bebranded and otherwise personalized by and for the sellers. Such avirtual store may also offer promotions, incentives, and features thatare specific and personalized to a relevant seller. In one embodiment,the listings and/or transactions associated with the virtual store andits features may be provided to one or more users.

Navigation of the network-based content publisher 102 may be facilitatedby a navigation module 208. For example, a search module may, interalia, enable key word searches of listings published via thenetwork-based content publisher 102. A browser module may allow users,via an associated Iii, to browse various category, catalogue, inventory,social network, and review data structures within the network-basedcontent publisher 102. Various other navigation modules 208 (e.g., anexternal search engine) may be provided to supplement the search andbrowsing modules. Consistent with some embodiments, the results for keyword searches of listings published via the network-based contentpublisher 102 may be filtered to include only listings corresponding tosocial network connections of the user (e.g., indicated friends andfamily).

In one embodiment, an electronic shopping cart module 210 is used tocreate an electronic shopping cart used by users of the network-basedcontent publisher 102 to add and store products (e.g., goods andservices) listed by the store module 206. The electronic shopping cartmodule 210 may also be used to “check out,” meaning a user may purchaseproducts in the electronic shopping cart. The electronic shopping cartmodule 210 may facilitate the transactions by automatically finding theproducts in the electronic shopping cart across at least one or all of apredefined set of vendors, a comparison shopping site, an auction site,etc. In various embodiments, the selection criteria for which vendor orvendors to purchase from may include, but are not limited to, criteriasuch as lowest cost, fastest shipping time, preferred or highest ratedvendors or sellers, or any combination thereof.

As illustrated in FIG. 2, the marketplace application 124 may include apayment module 212 that may provide a number of payment services andfunctions to users. The payment module 212 may allow users to accumulatevalue (e.g., in a commercial currency, such as the U.S. dollar, or aproprietary currency, such as “points”) in accounts, and then later toredeem the accumulated value for products (e.g., goods or services) thatare made available via the payment module 212. For some exampleembodiments, the payment module 212 generally enables transfer of values(e.g., funds, reward points, etc.) from an account associated with oneparty (e.g., a sender) to another account associated with another party(e.g., a receiver).

As illustrated in FIG. 2, the marketplace application 124 may include arecommendation module 214, which may provide recommendation services andfunctions to users. In some embodiments, the recommendation module 214may receive requests for recommendations, and, in turn, provide arecommendation to the user based on information about the usermaintained as part of the user data. In some embodiments, therecommendation module 214 may automatically generate and provide arecommendation based on the activity of the user. The recommendationsprovided by the recommendation module 214 may contain one or more items(e.g., products offered for sale, articles, blogs, movies, socialnetwork connections, etc.) that may potentially interest a user. Therecommendations may, for example, be based on previous productspurchased by the user, a web page viewed by the user, or an item givenfavorable feedback by the user, or communication session states savedusing the scratchpad application 126.

FIG. 3 is a block diagram illustrating an example embodiment of multiplemodules forming the scratchpad application 126, which is provided aspart of the network-based content publisher 102. The scratchpadapplication 126 is shown as including a user input module 300, a statemodule 302, a user interface module 304, an analysis module 306, agrouping module 308, and a personalization module 310, all configured tocommunicate with each other (e.g., via a bus, shared memory, a switch,or application programming interfaces (APIs)). The various modules ofthe scratchpad application 126 may access the databases 130 via thedatabase server 128, and each of the various modules of the scratchpadapplication 126 may each be in communication with one or more thirdparty applications 116. Further, the various modules of the scratchpadapplication 126 may access a machine-readable memory of the clientdevice 106.

Consistent with some embodiments; the user input module 300 may beconfigured to receive user input generated by one or more input/output(I/O) devices that may be included with or communicatively coupled tothe client device 106. Depending on the form of the client device, theI/O devices may, for example, be a mouse, a track pad, a keypad, akeyboard, a multi-touch sensing surface (e.g., a touchscreen ortrackpad), a microphone, a speaker, a camera, and the like. The userinput may be received by one of the aforementioned I/O devices and insome embodiments, transmitted to the application server 122 for receiptby the user input module 300.

The state module 302 may be configured to capture and store session datathat is representative of a state of a communication session and may beused to recall the state of the communication session. Session datarefers to a series of steps, events or actions performed by a user whenvisiting a web site or other such activity performed during acommunication session while using one or more applications 110 executingon a client device (e.g., client device 106). Example session dataincludes events that describe the actions performed by a user whenconducting an online transaction, completing an online form, taking anonline survey, and participating in other online activities that involvetwo or more steps performed by the user.

The session data may include interactions of the client device 106 withthe application server 122 such as information provided by a user,buttons (or other visual indicators) activated by the user, anidentification of steps completed by the user, keystrokes, cursor andpointer movements, actions canceled by the user, and other types ofclickstream data. Accordingly, the state module 302 may be configured tomonitor, track, and record the activities and interactions of a user,using one or more devices (e.g., client device 106), with the variousmodules of the network system 100. The session data may further includecontextual information (e.g., a device ID, location information, orother device data) provided by one or more applications 110 executing ona client device as part of the communication session.

The session data may include user requests transmitted to theapplication server 122 such as keyword search queries performed,requests for recommendations, web page view requests, requests to add aproduct to a user wish list, watch list or electronic shopping cart, orthe like. The session data may also include responses to the userrequests transmitted by the application server 122 such as keywordsearch results, recommendations, web pages, interfaces for a wish list,watch list or electronic shopping cart, or the like. It will beappreciated that in some embodiments, the keyword searches,recommendations and web pages may correspond to one or more listingscreated and maintained by the marketplace application 124.

The state module 302 may automatically capture and store the sessiondata without further user interaction or in response to the receipt ofuser input (e.g., received by the user input module 300). The statemodule 302 may store the session data in the database 130 (e.g., as anXML-based text document), in a machine-readable medium of a clientdevice of the user (e.g., client device 106), or both.

The user interface module 304 may be configured to generate a scratchpadinterface to be presented on client devices of a user. The scratchpadinterfaces generated by the user interface module 304 allow users toquickly save, access, organize, and compare items of interest.Scratchpad interfaces may be displayed in conjunction with multipleother scratchpad interfaces that are involved in a given communicationsession (e.g., with the client device 106). The scratchpad interfacesmay include, at least, a visual representation of session data capturedby the state module 302 that is representative of a state of acommunication session.

Consistent with some embodiments, each scratchpad interface may includevisual representations of multiple sets of session data. Depending onthe user's activity during a given data session, the multiple sets ofsession data may include both homogeneous and heterogeneous groups. Forexample, a homogeneous group of session data sets may include datarelated to a particular category of product (e.g., “digital cameras”),while a heterogeneous group of session data may include data related toproducts from various categories of product (e.g., a digital camera, aholiday sweater, and a toaster).

In some embodiments, the scratchpad interface may include functionalityto allow a user to compare multiple items included in multiple sets ofsession data. In some embodiments, this functionality may be provided tousers upon receiving user input (e.g., received by the user input module300) requesting a comparison of a homogeneous group of session datasets. The comparison may include a comparison of various attributes ofitems included in session data. For example, the scratchpad interfacemay contain a homogeneous group of three sets of session data. The firstset of session data may relate to a first digital camera, the second setof session data may relate to a second digital camera, and the third setof session data may relate to a third digital camera. Following thisexample, the state module 302 may, upon receiving appropriate userinput, generate a display of the three sets of session data in a mannerfor convenient comparison of the three digital cameras including acomparison of a select set of attributes of each.

The user interface module 304 may be further configured to name each setof session data corresponding to respective communication sessionstates. The name assigned to each set of session data may be based onuser input or may be automatically assigned based on information in thesession data. More particularly, the user interface module 304 may, forexample, name a particular set of session data according to the type ofcommunication session (e.g., shopping), a process flow being employed inthe communication session (e.g., checkout flow), operations performedleading up to the state of the communication session (e.g., a particularsearch query performed), a page being viewed, or the like.

The analysis module 306 may be configured to analyze activity of a userduring communication sessions to identify certain states ofcommunication session that may be of interest. To this end, the analysismodule 306 may analyze the activity of a user to learn typical processflows of the user. A “typical process flow” refers to a particularsequence of operations regularly performed by the user to achieve aparticular result. Each operation of a sequence may have an ordereddependency on the other operations. A user may have a different typicalprocess flow for each type of achievable result. For example, a user mayhave a typical process flow that corresponds to the purchase of an item,another typical process flow for researching information, and anothertypical process flow for listing an item for sale. The types ofachievable results may include, but are not limited to, a completedweb-based form, a completed web-based search, a completed transaction,or successfully listing an item for sale (e.g., via marketplaceapplication 124).

As part of learning a typical process flow of a user, the analysismodule 306 may identify certain inefficiencies of the user's typicalprocess flow. For example, the analysis module 306 may determine that auser often returns to a particular state or repeats a particularoperation of the sequence or a subset thereof.

Upon learning the typical process flow of a user, the analysis module306 may determine that subsequent communication sessions involve orinclude a typical process flow of the user. This determination that acommunication session involves or includes a typical process flow may bebased on the user performing operations ordered in the manner of thetypical process flow. In this manner, the analysis module 306 may beable to anticipate certain operations that a user will perform duringthe communication session because the analysis module 306 is aware ofthe operations typically performed by the user and the order of suchoperations. Further, the analysis module 306 may anticipate when a useris going to save a certain state of a communication session based on theuser previously saving a state of a previous communication session thatresulted from the performance of similar or identical operations.

The grouping module 308 may be configured to group sets of session datarepresenting certain states of one or more communication sessions. Thegrouping module 308 may allow a user to group sets of session dataaccording to the preference of the user, or in some embodiments, thegrouping module 308 may automatically group the sets of session data.The grouping of sets of session data may, for example, be based on oneor more similar attributes of the saved states, contextual information(e.g., timing or location information) included in the session data, orsimilar operations or interactions performed that resulted in thestates. The grouping module 308 may also be configured to label eachgroup of session data. Labels may be provided or edited by a user, ormay be automatically determined when grouping the sets of session data.

The personalization module 310 may be configured to providepersonalization services to users of the scratchpad application 126. Thepersonalization services may include personalized recommendations orpersonalized search results. As such, the personalization module 310 maywork in conjunction with the navigation module 208 and therecommendation module 214 to provide such personalized services. Thepersonalization services provided by the personalization module 310 maytake into account the typical process flow of a user determined by theanalysis module 306. The personalization services provided by thepersonalization module 310 may also be based on states of communicationsessions saved by the user using the scratchpad application 126.

FIG. 4A is an interaction diagram depicting a communication sessionbetween a first client device and an application server, consistent withsome embodiments. The first client device illustrated in FIG. 4A is thefirst client device of at least two client devices belonging to a userand may, for example, correspond to the client device 106. Asillustrated, the application server corresponds to the applicationserver 122.

As shown, a communication session may be established between the firstclient device and the application server 122. In some embodiments, theuser may be instructed to log in or otherwise authenticate his identityas part of establishing the communication session. The communicationsession may comprise multiple data exchanges over a network (e.g.,communication network 104) including the transmission of a plurality ofrequests by the first client device received by the application server122. The application server 122 may, in turn, transmit a plurality ofresponses to the first client device in response to the aforementionedplurality of requests. During the course of the communication sessionwith the first client device, the application server 122 may select acertain state of the communication to be stored for later recall. Theselection of the state may be performed automatically in anticipation ofan operation or a set of operations associated with the state beingrepeated, consistent with some embodiments. Alternatively, the user,utilizing one of several possible I/O devices with the first clientdevice, may signal the application server 122, through appropriate userinput, to save the selected state of the communication session.

Upon selecting the state of the communication session, the applicationserver 122 may store session data representative of the state of thedata session in a session data repository (e.g., database 130 or amachine readable medium of the client device). Further, the applicationserver 122 may generate a scratchpad interface that includes a visualrepresentation of the state of the communication session represented bythe session data. The application server 122 may then transmitinstructions to the first client device that causes the client device todisplay the scratchpad interface.

The first client device may present the scratchpad interface inconjunction with other content involved in the continued execution ofthe communication session. In addition to providing a visualrepresentation of the state of the communication session, the scratchpadinterface presented on the first client device may allow the user toreturn to the state of the communication session through selection ofthe visual representation. As shown, the application server 122 mayreceive the user selection of the session data.

In response to receiving the user selection, the application server 122may retrieve the session data from the session data repository. Theapplication server 122 may then provide instructions to the first clientdevice that cause the first client device to recall and return to thestate of the communication session previously captured in response tothe user input. In this manner, the user may revisit the prior state ofthe communication session.

As illustrated in FIG. 4A, the communication session between the firstclient device and the application server 122 may subsequently beterminated. Consistent with some embodiments, in response to terminatingthe communication session, the application server 122 may remove ordelete the session data stored in the data session repository, at whichpoint the session data may no longer be available for display in thescratchpad interface during subsequent communication sessions.

FIG. 4B is an interaction diagram depicting a communication sessionbetween a second client device and an application server, consistentwith some embodiments. In particular, the application server correspondsto application server 122 and the second client device is the second ofat least two client devices belonging to the user discussed in FIG. 4A.Although distinct from the first client device, the second client devicemay also correspond to at least one possible variation of the clientdevice 106 discussed herein. Further, the various interactions betweenthe second client device and the application server illustrated in FIG.4B may be performed at any point subsequent to the storing of sessiondata discussed in FIG. 4A.

As shown in FIG. 4B, a communication session is established between thesecond client device and the application server 122. In someembodiments, the user may be instructed to log in or otherwiseauthenticate his identity as part of establishing the communicationsession. This authentication may provide the application server 122 witha linking between the first client device and second client device andmay provide the user with access to the session data on the secondclient device, which was saved during the communication session with thefirst client device. Further, as part of establishing the communicationsession, the application server may provide the second client devicewith instructions to present the scratchpad interface discussed in FIG.4A.

Utilizing an I/O device of the second client device, the user may selectthe visual representation of the previously saved state of thecommunication session (discussed in FIG. 4A) displayed in the scratchpadinterface. The user selection is then transmitted by the second clientdevice and received by the application server 122. In response toreceiving the user selection, the application server may retrieve thesession data from the session data repository (e.g., databases 130) andtransmit instructions to the second client device that cause the secondclient device to present the state of the communication session (e.g.,originating on the first client device) represented by the session data.

FIG. 5A is an interface diagram depicting an example communicationsession, consistent with some embodiments. Consistent with someembodiments, the example communication session may take place betweenthe application server 122 and the client device 106 over communicationnetwork 104. As illustrated in FIG. 5A, the example communicationsession includes a search query 500 input by a user on an interfacedisplayed on the client device 106 (e.g., on a touchscreen of the clientdevice 106), which may be transmitted as a request to the applicationserver 122.

FIG. 5B is an interface diagram depicting further data exchanges of thecommunication session, consistent with some embodiments. As illustratedin FIG. 5B, search results 502 may be returned by the application server122 to the client device 106 in response to receiving the search query500. In particular, the search results 502 may include items 504-512. Asshown, each of the items 504-512 may correspond to a listing for aproduct offered for sale (e.g., published using the marketplaceapplication 124). Consistent with some embodiments, the user of theclient device 106 may, through appropriate touch gesture (e.g., doubletap), cause the scratchpad application 126 to capture and store a stateof the example communication session. For example, upon viewing webpagescorresponding to the items 508 and 510, the user may choose to save therespective states of the communication session at those times.

FIG. 5C is an interface diagram depicting a scratchpad interface 514displaying visual representations of various states of the communicationsession, consistent with some embodiments. In particular, the scratchpadinterface 514 includes elements 516 and 518, which are visualrepresentations of session data corresponding to the state of thecommunication session at the time of viewing the respective webpages foritems 508 and 510. The session data corresponding to elements 516 and518 may be saved by the scratchpad application 126 in response toreceiving appropriate user input while viewing the search results 502 asdiscussed in reference to FIG. 5B. It shall be appreciated that in someother embodiments, the session data associated with the elements 516 and518 may be automatically saved by the state module 302 without userinteraction.

As shown, each of the elements 516 and 518 may include information(e.g., a description) or content (e.g., a corresponding image)associated with each state of the communication session. Further, theelements 516 and 518 displayed on the scratchpad interface 514 may begrouped according to the methodologies discussed herein. For example, asshown, the elements 516 and 518 are displayed within group 520 based oneach of the states corresponding to the elements 516 and 518 beingarrived at from the search query 500 for “sunglasses.” As such, thegroup 520 is appropriately titled “sunglasses” by the grouping module308.

The scratchpad interface 514 may further include tab 522, which may beused to hide or expand the scratchpad interface 514. In someembodiments, the scratchpad interface 514 may be hidden or expanded viaa touch gesture swipe to the left or right of the display of the clientdevice 106. The tab 522 may also be used to move the location of thescratchpad interface 514 to the top, bottom or left of the display.

FIG. 5D is an interface diagram depicting further exchanges of theexample communication session, consistent with some embodiments. Inparticular, the example communication session may include a furthersearch query 550 for “bike helmets” performed subsequent to the searchquery 500. The search results 524-532 may be returned by the applicationserver 122 to the client device 106 in response to receiving the searchquery 550. As shown, the majority of scratchpad interface 514 may behidden while viewing the search results 524-532. A small portion of thescratchpad interface 514 (e.g., tab 522) may, however, continue to bedisplayed while viewing the search results 524-532. For example, uponviewing webpages corresponding to the items 508 and 510, the user maychoose to save the respective states of the communication session atthose times.

FIG. 5E is an interface diagram depicting a scratchpad interfacedisplaying multiple grouped sets of user interface elementsrepresentative of session data, consistent with some embodiments. Inparticular, the scratchpad interface 514 is illustrated in FIG. 5E toinclude elements 534 and 536 along with elements 516 and 518. Theelements 534 and 536 are visual representations of session datacorresponding to the state of the communication session at the time ofviewing the respective webpages for items 526 and 530, respectively. Aswith elements 516 and 518, the session data corresponding to elements534 and 536 may be saved by the scratchpad application 126 in responseto receiving appropriate user input while viewing the items 526 and 530or automatically without user intervention.

The elements 534 and 536 displayed on the scratchpad interface 514 mayalso be displayed within group 538 based on each of the statescorresponding to the elements 534 and 536 being arrived at from thesearch query 550 for “bike helmets.” As such, the group 538 isappropriately titled “bike helmets” by the grouping module 308. Thegrouping and labeling of the elements 534 and 536 within the group 538may be performed by the grouping module 308 consistent with themethodologies discussed herein.

FIG. 6 is a flowchart illustrating an example method 600 of storing andpresenting a state of a communication session, consistent with someembodiments. The method 600 may be embodied in computer-readableinstructions for execution by one or more processors such that the stepsof the method 600 may be performed in part or in whole by theapplication server 122 or the client device 106 and, in particular, themodules 300-310 comprising the scratchpad application 126.

At operation 605, a communication session may be established between theclient device 106 and the application server 122. The communicationsession may include multiple data exchanges including a plurality ofrequests received from the client device 106 and a plurality ofresponses transmitted by the application server 122 in response to therequests. For example, a user of the client device 106 may transmit akeyword search request for products listed for sale using themarketplace application 124. In turn, the application server 122 mayrespond with a number of search results for products matching the user'skeyword search request. At operation 610, the user input module 300 mayreceive user input from the client device 106 requesting that aparticular state of the communication session be saved for later access.In some embodiments, the user input may be a touch gesture received on amulti-touch sensing surface of the client device 106. The touch gesturemay, for example, be a tap, a double tap, a long press, a pan, a flick,a two finger tap, a pinch open, or the like.

At operation 615, the state module 302 may, in response to the receivingthe user input, cause session data representative of the state of thecommunication session to be temporarily stored for a predeterminedamount of time. The session data may be stored in the database 130, orin some embodiments, in a machine-readable medium of the client device106 for at least a period of time (e.g., until an expiration time periodhas passed). Following the example from above, upon receiving the searchresults for products matching the user's keyword search request, theuser may, for example, double tap the search results displayed on atouchscreen of the client device 106. This user input may then beprovided to the user input module 300, and in response the state module302 may capture and temporarily store the search results as session datain the database 130.

At operation 620, the user interface module 304 may generate ascratchpad interface including a visual representation of the state ofthe communication session represented by the session data. Thescratchpad interface may present the session data (e.g., representingthe state of the communication session) in a manner such that the usermay select a particular set of session data, and in turn, the state ofthe communication session represented by the session data may berestored. The scratchpad interface may further allow a user to comparesets of session data and certain items contained therein. Following theexample above, the user interface module 304 may generate a scratchpadinterface that includes a textual detail of a selection of the searchresults.

At operation 625, the user interface module 304 may provide instructionsto the client device 106, which cause the device to present thescratchpad interface. The scratchpad interface may be displayed inconjunction with other content related to the communication session,consistent with some embodiments. Consistent with some embodiments, thevisual representation of the session data may include a link or otherinteractive element that when activated through user input causes theclient device 106 to return to the state of the communication sessionrepresented by the session data. As illustrated in FIG. 6, the method600 may include optional operations 630 and 635. At operation 630, aselection of session data (e.g., a hyperlink) made by the user may bereceived by the user input module 300. In response to the user selection(e.g., activating the hyperlink), the state of the communication sessionrepresented by the session data may be restored at operation 635.Following the example from above, the scratchpad presented on the clientdevice 106 may include a hyperlink, which when selected by the user,causes the client device 106 to return to the original search queryresults page.

FIG. 7 is a flowchart illustrating an example method for storingadditional session data, consistent with some embodiments. The method700 may be embodied in computer-readable instructions for execution byone or more processors such that the steps of the method 700 may beperformed in part or in whole by the application server 122 or theclient devices 106 and 108 and, in particular, the modules 300-310comprising the scratchpad application. Further, the method 700 maycommence subsequent to the completion of method 600, consistent withsome embodiments.

At operation 705, the user input module 300 may receive an additionaluser input to save an additional state of the communication session thatis distinct from the state represented by the session data stored atoperation 615 of method 600. The user input may be received inaccordance with the methodologies discussed above in reference to method600. In response to receipt of the user input, the state module 302 maycause additional session data representative of the additional state ofthe communication session to be temporarily stored at operation 710. Theadditional session data may be temporarily stored in the database 130,or in some embodiments, in a machine-readable medium of the clientdevice 106. The additional session data may be stored until anexpiration time period has passed. At operation 715, the user interfacemodule 304 may transmit instructions to the client device 106 that causethe scratchpad interface to be updated to include visual representationsof the additional session data.

Following the example presented in reference to FIG. 6, the user maycontinue the communication session on the client device 106 with theapplication server 122 and in doing so perform an additional keywordsearch for another product. Upon receiving the search results at theclient device 106 from the application server 122, the user may save theadditional state of the communication session by again double tappingthe search results. In response to the user input, the state module 302may cause session data representative of the additional search resultsto be temporarily saved. Further, the scratchpad interface may byupdated by the user input module 300 to include the additional searchresults.

FIG. 8 is a flowchart illustrating an example method 800 for deletingsession data, consistent with some embodiments. The method 800 may beembodied in computer-readable instructions for execution by one or moreprocessors such that the steps of the method 800 may be performed inpart or in whole by the application server 122 or the client devices 106and, in particular, the modules 300-310 comprising the scratchpadapplication 126. Further, the method 800 may commence subsequent to thecompletion of methods 600 or 700, consistent with some embodiments.

Consistent with some embodiments, the state module 302 may cause sessiondata to be temporarily stored in the database 130 until an expirationtime period has elapsed. At operation 805, the state module 302 maydetermine that the expiration time period has elapsed. Consistent withsome embodiments, the expiration time period may be the duration of thecommunication session, and in such embodiments, the operation 805comprises determining that the communication session has terminated. Insome embodiments, the expiration time period may be a default value or avalue set by a user.

At operation 810, the state module 302 may cause the stored session datato be deleted in response to determining that the expiration time periodhas elapsed. In some embodiments, if the client device 106 is stillengaged in a communication session, the user interface module 304 may,at operation 815, transmit instructions to the client device 106 thatcause the client device 106 to refresh the scratchpad interface. Uponbeing refreshed, the scratchpad interface will no longer include visualrepresentations of the session data for which the expiration time periodhas elapsed, and in turn, the user may no longer return to the state ofthe communication session represented by the expired session data.

FIG. 9 is a flowchart illustrating an example method 900 forautomatically storing a state of a communication session, consistentwith some embodiments. The method 900 may be embodied incomputer-readable instructions for execution by one or more processorssuch that the steps of the method 900 may be performed in part or inwhole by the application server 122 or the client devices 106 and, inparticular, the modules 300-310 comprising the scratchpad application126.

At operation 905, the analysis module 306 may access historical sessiondata of a subject user. The historical session data pertains to previouscommunication sessions between various client devices of the subjectuser and the application server 122. From the historical session data,the analysis module may determine a typical process flow of the subjectuser, at operation 910. The typical process flow is a sequence ofoperations regularly performed by the subject user to achieve aparticular result. For example, a typical process flow of the subjectuser for purchasing items from a network-based marketplace (alsoreferred to as a “checkout flow”) may include performing a search query,reviewing at least three results, performing a more refined searchquery, reviewing at least one additional result, adding at least oneitem to an electronic shopping cart, and completing a purchase of the atleast one item. It shall be appreciated that the operations 905 and 910may not be performed in some embodiments.

At operation 915, the application server 122 may establish acommunication session with the client device 106 being operated by theclient user. Upon initiating the session with the application server122, the subject user may be prompted to login or otherwise authenticatehis identity so as to provide the application server 122 with a linkingof the subject user to the historical session data and the typicalprocess flow learned at operation 910. At operation 920, the analysismodule 306 may determine that the communication session involves thetypical process flow of the user. This determination may be based on theoperations performed by the user coinciding with the operations of thetypical process flow. In some embodiments, the determination may bebased on contextual information provided by the client device 106 to theapplication server 122.

Given the knowledge of the operations regularly performed by the subjectuser, and the order in which they are performed, the analysis module 306may be able to anticipate the operations the subject user will performincluding those that are repeated. In this manner, the analysis module306 may identify a particular operation that is likely to be repeatedbased on the typical process flow of the subject user, at operation 925.Consistent with some embodiments, the identification of the particularoperation may be based on inefficiencies in the typical process flowthat arise from the user routinely returning to a previous operation inthe sequence of operations comprising the typical process flow. In someembodiments, the identification of the particular operation may be basedon an amount of time spent in a certain state, which, given the typicalprocess flow of the subject user, may indicate that the subject user islikely to return to that state (e.g., by repeating the operations thatlead to the state).

At operation 930, the state module 302 may cause session datarepresentative of the state of the communication session to be storedfor a predetermined amount of time. The session data may be stored inthe database 130, or in some embodiments, in a machine-readable mediumof the client device 106. At operation 935, the user interface module304 may generate a scratchpad interface that includes a visualrepresentation of the state of the communication session represented bythe session data, in accordance with the methodologies discussed herein.At operation 940, the user interface module 304 may provide instructionsto the client device 106 that cause the client device 106 to present thescratchpad interface.

FIG. 10 is a flowchart illustrating an example method 1000 for groupinguser interface elements representing states of a communication session,consistent with some embodiments. The method 1000 may be embodied incomputer-readable instructions for execution by one or more processorssuch that the steps of the method 1000 may be performed in part or inwhole by the application server 122 or the client devices 106 and, inparticular, the modules 300-310 comprising the scratchpad applications126.

At operation 1005, the grouping module 308 may access multiple sets ofsession data representative of a plurality of states of a communicationsession. The multiple sets of session data may correspond to states ofthe communication session saved by a user or automatically by thescratchpad application 128. At operation 1010, the grouping module 308may group the plurality of states according to similarities amongst eachof the states. The grouping may be performed in response to user inputor automatically, without user intervention. The grouping may, forexample, be based on a similar operation or set of operations performedthat lead to the states, states being part of a typical process flow, orcommon attributes in the session data representing the states.

At operation 1015, the grouping module 308 may assign a label to eachgroup of states. The label may be based on user input, or may bedetermined automatically based on the grouping. For example, ininstances in which the states are grouped based on a common attribute,the grouping module 308 may assign a label to the group using the commonattribute. At operation 1020, the user interface module 304 may provideinstructions to the client device 106, which cause the device to presenta scratchpad interface with visual representations of the multiple setsof session data presented within the groupings determined at operation1010.

Modules, Components and Logic

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute eithersoftware modules (e.g., code embodied on a machine-readable medium or ina transmission signal) or hardware modules. A hardware module is atangible unit capable of performing certain operations and may beconfigured or arranged in a certain manner. In example embodiments, oneor more computer systems (e.g., a standalone, client, or server computersystem) or one or more hardware modules of a computer system (e.g., aprocessor or a group of processors) may be configured by software (e.g.,an application or application portion) as a hardware module thatoperates to perform certain operations as described herein.

In various embodiments, a hardware module may be implementedmechanically or electronically. For example, a hardware module maycomprise dedicated circuitry or logic that is permanently configured(e.g., as a special-purpose processor, such as a FPGA or an ASIC) toperform certain operations. A hardware module may also compriseprogrammable logic or circuitry (e.g., as encompassed within ageneral-purpose processor or other programmable processor) that istemporarily configured by software to perform certain operations. Itwill be appreciated that the decision to implement a hardware modulemechanically, in dedicated and permanently configured circuitry, or intemporarily configured circuitry (e.g., configured by software) may bedriven by cost and time considerations.

Accordingly, the term “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired) or temporarilyconfigured (e.g., programmed) to operate in a certain manner and/or toperform certain operations described herein. Considering embodiments inwhich hardware modules are temporarily configured (e.g., programmed),each of the hardware modules need not be configured or instantiated atany one instance in time. For example, where the hardware modulescomprise a general-purpose processor configured using software, thegeneral-purpose processor may be configured as respective differenthardware modules at different times. Software may accordingly configurea processor, for example, to constitute a particular hardware module atone instance of time and to constitute a different hardware module at adifferent instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multipleof such hardware modules exist contemporaneously, communications may beachieved through signal transmission (e.g., over appropriate circuitsand buses that connect the hardware modules). In embodiments in whichmultiple hardware modules are configured or instantiated at differenttimes, communications between such hardware modules may be achieved, forexample, through the storage and retrieval of information in memorystructures to which the multiple hardware modules have access. Forexample, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions. The modulesreferred to herein may, in some example embodiments, compriseprocessor-implemented modules.

Similarly, the methods described herein may be at least partiallyprocessor-implemented. For example, at least some of the operations of amethod may be performed by one or more processors orprocessor-implemented modules. The performance of certain of theoperations may be distributed among the one or more processors, not onlyresiding within a single machine, but deployed across a number ofmachines. In some example embodiments, the processor or processors maybe located in a single location (e.g., within a home environment, anoffice environment, or as a server farm), while in other embodiments theprocessors may be distributed across a number of locations.

The one or more processors may also operate to support performance ofthe relevant operations in a “cloud computing” environment or as a“software as a service” (SaaS). For example, at least some of theoperations may be performed by a group of computers (as examples ofmachines including processors), with these operations being accessiblevia a network (e.g., the Internet) and via one or more appropriateinterfaces (e.g., APIs).

Electronic Apparatus and System

Example embodiments may be implemented in digital electronic circuitry,or in computer hardware, firmware, software, or in combinations of them.Example embodiments may be implemented using a computer program product,for example, a computer program tangibly embodied in an informationcarrier, for example, in a machine-readable medium for execution by, orto control the operation of, data processing apparatus, for example, aprogrammable processor, a computer, or multiple computers.

A computer program can be written in any form of programming language,including compiled or interpreted languages, and it can be deployed inany form, including as a stand-alone program or as a module, subroutine,or other unit suitable for use in a computing environment. A computerprogram can be deployed to be executed on one computer or on multiplecomputers at one site, or distributed across multiple sites andinterconnected by a communication network.

In example embodiments, operations may be performed by one or moreprogrammable processors executing a computer program to performfunctions by operating on input data and generating output. Methodoperations can also be performed by, and apparatus of exampleembodiments may be implemented as, special purpose logic circuitry(e.g., a FPGA or an ASIC).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. Inembodiments deploying a programmable computing system, it will beappreciated that both hardware and software architectures meritconsideration. Specifically, it will be appreciated that the choice ofwhether to implement certain functionality in permanently configuredhardware (e.g., an ASIC), in temporarily configured hardware (e.g., acombination of software and a programmable processor), or a combinationof permanently and temporarily configured hardware may be a designchoice. Below are set out hardware (e.g., machine) and softwarearchitectures that may be deployed, in various example embodiments.

Example Machine Architecture and Machine-Readable Medium

FIG. 11 is a diagrammatic representation of a machine in the exampleform of a computer system 1100 within which a set of instructions 1124for causing the machine to perform any one or more of the methodologiesdiscussed herein may be executed. The computer system 1100 maycorrespond to client device 106, third party server 114, or applicationserver 122, consistent with some embodiments. In alternativeembodiments, the machine operates as a standalone device or may beconnected (e.g., networked) to other machines. In a networkeddeployment, the machine may operate in the capacity of a server or aclient machine in server-client network environment, or as a peermachine in a peer-to-peer (or distributed) network environment. Themachine may be a personal computer (PC), a tablet PC, a set-top box(STB), a PDA, a cellular telephone, a smart phone (e.g., iPhone®), atablet computer, a web appliance, a network router, switch or bridge, orany machine capable of executing instructions (sequential or otherwise)that specify actions to be taken by that machine. Further, while only asingle machine is illustrated, the term “machine” shall also be taken toinclude any collection of machines that individually or jointly executea set (or multiple sets) of instructions to perform any one or more ofthe methodologies discussed herein.

The example computer system 1100 includes a processor 1102 (e.g., acentral processing unit (CPU), a graphics processing unit (GPU) orboth), a main memory 1104 and a static memory 1106, which communicatewith each other via a bus 1108. The computer system 1100 may furtherinclude a video display unit 1110 (e.g., a liquid crystal display (LCD)or a cathode ray tube (CRT)). The computer system 1100 also includes oneor more input/output (I/O) devices 1112, a location component 1114, adisk drive unit 1116, a signal generation device 1118 (e.g., a speaker),and a network interface device 1120. The I/O devices 1112 may, forexample, include a keyboard, a mouse, a keypad, a multi-touch surface(e.g., a touchscreen or track pad), a microphone, a camera, and thelike.

The location component 1114 may be used for determining a location ofthe computer system 1100. In some embodiments, the location component1114 may correspond to a GPS transceiver that may make use of thenetwork interface device 1120 to communicate GPS signals with a GPSsatellite. The location component 1114 may also be configured todetermine a location of the computer system 1100 by using an internetprotocol (IP) address lookup or by triangulating a position based onnearby mobile communications towers. The location component 1114 may befurther configured to store a user-defined location in main memory 1104or static memory 1106. In some embodiments, a mobile location enabledapplication may work in conjunction with the location component 1114 andthe network interface device 1120 to transmit the location of thecomputer system 1100 to an application server or third party server forthe purpose of identifying the location of a user operating the computersystem 1100.

In some embodiments, the network interface device 1120 may correspond toa transceiver and antenna. The transceiver may be configured to bothtransmit and receive cellular network signals, wireless data signals, orother types of signals via the antenna, depending on the nature of thecomputer system 1100.

Machine-Readable Medium

The disk drive unit 1116 includes a machine-readable medium 1122 onwhich is stored one or more sets of data structures and instructions1124 (e.g., software) embodying or used by any one or more of themethodologies or functions described herein. The instructions 1124 mayalso reside, completely or at least partially, within the main memory1104, static memory 1106, and/or within the processor 1102 duringexecution thereof by the computer system 1100, with the main memory 1104and the processor 1102 also constituting machine-readable media.

Consistent with some embodiments, the instructions 1124 may relate tothe operations of an operating system (OS). Further, the instructions1124 may relate to operations performed by applications (commonly knownas “apps”), consistent with some embodiments. One example of such anapplication is a mobile browser application that displays content, suchas a web page or a user interface using a browser.

While the machine-readable medium 1122 is shown in an example embodimentto be a single medium, the term “machine-readable medium” may include asingle medium or multiple media (e.g., a centralized or distributeddatabase, and/or associated caches and servers) that store the one ormore data structures or instructions 1124. The term “machine-readablemedium” shall also be taken to include any tangible medium that iscapable of storing, encoding, or carrying instructions (e.g.,instructions 1124) for execution by the machine and that cause themachine to perform any one or more of the methodologies of the presentdisclosure, or that is capable of storing, encoding or carrying datastructures used by or associated with such instructions. The term“machine-readable medium” shall accordingly be taken to include, but notbe limited to, solid-state memories, and optical and magnetic media.Specific examples of machine-readable media include non-volatile memory,including by way of example, semiconductor memory devices (e.g.,erasable programmable read-only memory (EPROM), electrically erasableprogrammable read-only memory (EEPROM)) and flash memory devices;magnetic disks such as internal hard disks and removable disks;magneto-optical disks; and CD-ROM and DVD-ROM disks.

Furthermore, the tangible machine-readable medium is non-transitory inthat it does not embody a propagating signal. However, labeling thetangible machine-readable medium as “non-transitory” should not beconstrued to mean that the medium is incapable of movement—the mediumshould be considered as being transportable from one real-world locationto another. Additionally, since the machine-readable medium is tangible,the medium may be considered to be a machine-readable device.

Transmission Medium

The instructions 1124 may further be transmitted or received over acommunications network 1126 using a transmission medium. Theinstructions 1124 may be transmitted using the network interface device1120 and any one of a number of well-known transfer protocols (e.g.,HTTP). Examples of communication networks include a LAN, a WAN, theInternet, mobile telephone networks, POTS networks, and wireless datanetworks (e.g., WiFi and WiMax networks), The term “transmission medium”shall be taken to include any intangible medium that is capable ofstoring, encoding, or carrying instructions 1124 for execution by themachine, and includes digital or analog communications signals or otherintangible media to facilitate communication of such software.

Although the embodiments of the present invention have been describedwith reference to specific example embodiments, it will be evident thatvarious modifications and changes may be made to these embodimentswithout departing from the broader scope of the inventive subjectmatter. Accordingly, the specification and drawings are to be regardedin an illustrative rather than a restrictive sense. The accompanyingdrawings that form a part hereof, show by way of illustration, and notof limitation, specific embodiments in which the subject matter may bepracticed. The embodiments illustrated are described in sufficientdetail to enable those skilled in the art to practice the teachingsdisclosed herein. Other embodiments may be used and derived therefrom,such that structural and logical substitutions and changes may be madewithout departing from the scope of this disclosure. This DetailedDescription; therefore, is not to be taken in a limiting sense, and thescope of various embodiments is defined only by the appended claims,along with the full range of equivalents to which such claims areentitled.

Such embodiments of the inventive subject matter may be referred toherein, individually and/or collectively; by the term “invention” merelyfor convenience and without intending to voluntarily limit the scope ofthis application to any single invention or inventive concept if morethan one is in fact disclosed. Thus, although specific embodiments havebeen illustrated and described herein, it should be appreciated that anyarrangement calculated to achieve the same purpose may be substitutedfor the specific embodiments shown. This disclosure is intended to coverany and all adaptations or variations of various embodiments.Combinations of the above embodiments, and other embodiments notspecifically described herein, will be apparent to those of skill in theart upon reviewing the above description.

All publications, patents, and patent documents referred to in thisdocument are incorporated by reference herein in their entirety, asthough individually incorporated by reference. In the event ofinconsistent usages between this document and those documents soincorporated by reference, the usage in the incorporated referencesshould be considered supplementary to that of this document; forirreconcilable inconsistencies, the usage in this document controls.

In this document, the terms “a” or “an” are used, as is common in patentdocuments, to include one or more than one, independent of any otherinstances or usages of “at least one” or “one or more.” In thisdocument, the term “or” is used to refer to a nonexclusive or; such that“A or B” includes “A but not B,” “B but not A,” and “A and B,” unlessotherwise indicated. In the appended claims, the terms “including” and“in which” are used as the plain-English equivalents of the respectiveterms “comprising” and “wherein.” Also, in the following claims, theterms “including” and “comprising” are open-ended; that is, a system,device, article, or process that includes elements in addition to thoselisted after such a term in a claim are still deemed to fall within thescope of that claim. Moreover, in the following claims, the terms“first,” “second,” and “third,” and so forth are used merely as labels,and are not intended to impose numerical requirements on their objects.

1. A system comprising: one or more processors of a machine; anon-transitory machine-readable medium storing instructions that, whenexecuted by the one or more processors, causes to machine to performoperations comprising: causing display, on a client device, of a userinterface comprising an interface element presented in conjunction witha presentation of content, the interface element comprising: a firstselectable element comprising an image corresponding to a first itemlisting; a second selectable element to hide the interface element; inresponse to receiving a first user input indicative of a request to savea second item listing, updating the display of the interface element toinclude a third selectable element corresponding to the second itemlisting; and in response to receiving second user input indicative of aninteraction with the second selectable element, hiding the display ofthe interface element in the user interface while maintaining thepresentation of content.
 2. The system of claim 1, wherein: the firstuser input indicative of the request to save the second item listingcorresponds to an interaction with a display of a set of search resultson the client device, the second item listing being included in the setof search results.
 3. The system of claim 1; wherein the operationsfurther comprise: receiving a search query; and causing display, on theclient device, of the set of search results including the secondlisting.
 4. The system of claim 1, wherein: the second selectableelement is further to expand display of the interface element; theoperations further comprise: in response to receiving third user inputindicative of a further interaction with the second selectable element,expanding the display of the interface element.
 5. The system of claim4, wherein the third user input comprises a touch gesture swipe.
 6. Thesystem of claim 1, wherein: the image is a first image of a first itemcorresponding to the first item listing; and the third selectableelement comprises a second image of a second item corresponding to thesecond item listing.
 7. The system of claim 1, wherein the operationsfurther comprise: causing display, on the client device, of a firstattribute corresponding to the first item listing; and causing display,on the client device, of a second attribute corresponding to the seconditem listing.
 8. A method comprising: causing display, on a clientdevice, of a user interface comprising an interface element presented inconjunction with a presentation of content, the interface elementcomprising: a first selectable element comprising an image correspondingto a first item listing; a second selectable element to hide theinterface element; in response to receiving a first user inputindicative of a request to save a second item listing, updating, usingone or more processors, the display of the interface element to includea third selectable element corresponding to the second item listing; andin response to receiving second user input indicative of an interactionwith the second selectable element; hiding the display of the interfaceelement in the user interface while maintaining the presentation ofcontent.
 9. The method of claim 8, wherein: the first user inputindicative of the request to save the second item listing corresponds toan interaction with a display of a set of search results on the clientdevice, the second item listing being included in the set of searchresults.
 10. The method of claim 8, further comprising: receiving asearch query; and causing display, on the client device, of the set ofsearch results including the second listing.
 11. The method of claim 8,wherein: the second selectable element is further to expand display ofthe interface element; the operations further comprise: in response toreceiving third user input indicative of a further interaction with thesecond selectable element, expanding the display of the interfaceelement.
 12. The method of claim 11, wherein the third user inputcomprises a touch gesture swipe.
 13. The method of claim 8, wherein: theimage is a first image of a first item corresponding to the first itemlisting; and the third selectable element comprises a second image of asecond item corresponding to the second item listing.
 14. The method ofclaim 8, wherein the operations further comprise: causing display, onthe client device, of a first attribute corresponding to the first itemlisting; and causing display, on the client device, of a secondattribute corresponding to the second item listing.
 15. A non-transitorymachine-readable storage medium embodying instructions that, whenexecuted by a machine, cause the machine to perform operationscomprising: causing display, on a client device, of a user interfacecomprising an interface element presented in conjunction with apresentation of content, the interface element comprising: a firstselectable element comprising an image corresponding to a first itemlisting; a second selectable element to hide the interface element; inresponse to receiving a first user input indicative of a request to savea second item listing, updating the display of the interface element toinclude a third selectable element corresponding to the second itemlisting; and in response to receiving second user input indicative of aninteraction with the second selectable element, hiding the display ofthe interface element in the user interface while maintaining thepresentation of content.
 16. The non-transitory machine-readable storagemedium of claim 15, wherein: the first user input indicative of therequest to save the second item listing corresponds to an interactionwith a display of a set of search results on the client device, thesecond item listing being included in the set of search results.
 17. Thenon-transitory machine-readable storage medium of claim 15, wherein theoperations further comprise: receiving a search query; and causingdisplay, on the client device, of the set of search results includingthe second listing.
 18. The non-transitory machine-readable storagemedium of claim 15, wherein: the second selectable element is further toexpand display of the interface element; the operations furthercomprise: in response to receiving third user input indicative of afurther interaction with the second selectable element, expanding thedisplay of the interface element.
 19. The non-transitorymachine-readable storage medium of claim 15, wherein: the image is afirst image of a first item corresponding to the first item listing; andthe third selectable element comprises a second image of a second itemcorresponding to the second item listing.
 20. The non-transitorymachine-readable storage medium of claim 15, wherein the operationsfurther comprise: causing display, on the client device, of a firstattribute corresponding to the first item listing; and causing display,on the client device, of a second attribute corresponding to the seconditem listing.